﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using System.Data.SqlClient;
namespace Crosland.Automotriz.Data.Dao.Linq
{
    public struct list
    {
        static list()
        {
            
        }
    }
    public class clsT_Man_Sistema_ArticuloDAO
    {
        private AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();

        public IEnumerable<Object> listar(int id_sistema, int id_modelo)
        {

            IEnumerable<Object> lista = new List<Object>();

            try
            {
                var q = (from tmsa in ContextoDeObjs.T_MAN_SISTEMA_ARTICULO
                         from tma in ContextoDeObjs.T_MAN_ARTICULO
                         from m in ContextoDeObjs.TD_MODELO
                         from tms in ContextoDeObjs.T_MAN_SISTEMA
                         where tmsa.COD_MATERIAL == tma.COD_MATERIAL && tms.ID_SISTEMA == tmsa.ID_SISTEMA
                         && tmsa.ID_MODELO == m.ID_MODELO && tmsa.ID_SISTEMA == id_sistema && tmsa.ID_MODELO == id_modelo
                         //orderby
                         //        tmsa.NRO_ITEM
                         select new
                         {
                             tmsa.ID_MAN_SISTEMA_ARTICULO,
                             tma.COD_MATERIAL,
                             tma.NOM_MATERIAL_INGLES,
                             tma.NOM_MATERIAL_ESP,
                             m.DES_MODELO,
                             tmsa.ID_MODELO,
                             tmsa.ID_SISTEMA,
                             tmsa.NRO_PAGINA,
                             tmsa.NRO_ITEM_SIST,
                             tmsa.NRO_ITEM_MANUAL,
                             tmsa.CANTIDAD,
                             tmsa.REMARK_ESP,
                             tmsa.REMARK_ING,
                             tms.DES_SISTEMA_INGLES,
                             tmsa.IND_ESTADO,
                           //  tma.DES_OBSERVACION_TECNICA,
                            // tma.IND_OBSERVACION_TECNICA

                         }).OrderBy(c => c.NRO_ITEM_SIST);

                lista = q.ToList();


            }
            catch
            {

            }

            return lista;

        }

        public IEnumerable<Object> listar(int intIdSistema, int intIdModelo, int intNroPag)
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                var q = (from tmsa in ContextoDeObjs.T_MAN_SISTEMA_ARTICULO
                         from tma in ContextoDeObjs.T_MAN_ARTICULO
                         from m in ContextoDeObjs.TD_MODELO
                         from tms in ContextoDeObjs.T_MAN_SISTEMA
                         where tmsa.COD_MATERIAL == tma.COD_MATERIAL && tms.ID_SISTEMA == tmsa.ID_SISTEMA
                         && tmsa.ID_MODELO == m.ID_MODELO && tmsa.ID_SISTEMA == intIdSistema && tmsa.ID_MODELO == intIdModelo
                         && tmsa.NRO_PAGINA == intNroPag
                         select new
                         {
                             tma.COD_MATERIAL,
                             tma.NOM_MATERIAL_INGLES,
                             tma.NOM_MATERIAL_ESP,
                             m.DES_MODELO,
                             tmsa.ID_MODELO,
                             tmsa.ID_SISTEMA,
                             tmsa.NRO_PAGINA,
                             tmsa.NRO_ITEM_SIST,
                             tmsa.NRO_ITEM_MANUAL,
                             tmsa.CANTIDAD,
                             tmsa.REMARK_ESP,
                             tmsa.REMARK_ING,
                             tms.DES_SISTEMA_INGLES,
                             tmsa.IND_ESTADO,
                             tmsa.ID_MAN_SISTEMA_ARTICULO
                            // tma.DES_OBSERVACION_TECNICA,
                             //tma.IND_OBSERVACION_TECNICA
                         }).OrderBy(c => c.NRO_ITEM_SIST);

                lista = q.ToList();
            }
            catch (Exception)
            {
                lista = null;
                throw;
            }

            return lista;
        }

        public List<T_MAN_SISTEMA_ARTICULO> consulta_sistema_articulo(int ID_MODELO, int ID_SISTEMA, string COD_MATERIAL, int NRO_PAGINA, string NRO_ITEM_MANUAL)
        {
            List<T_MAN_SISTEMA_ARTICULO> list = new List<T_MAN_SISTEMA_ARTICULO>();

            try
            {
                var q = from c in ContextoDeObjs.T_MAN_SISTEMA_ARTICULO
                        where c.ID_MODELO == ID_MODELO 
                        && c.ID_SISTEMA == ID_SISTEMA
                        && c.COD_MATERIAL == COD_MATERIAL
                        && c.NRO_PAGINA == NRO_PAGINA
                        && c.NRO_ITEM_MANUAL == NRO_ITEM_MANUAL
                        select c;

                list = q.ToList();
            }
            catch
            {
          
            }
            return list;
        }

        public bool Insertar(T_MAN_SISTEMA_ARTICULO Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_MAN_SISTEMA_ARTICULO", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool Modificar(T_MAN_SISTEMA_ARTICULO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_MAN_SISTEMA_ARTICULO", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;

            }
            return true;
        }

        public bool Eliminar(T_MAN_SISTEMA_ARTICULO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_MAN_SISTEMA_ARTICULO", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool insertarT_man_sistema_Articulo(int ID_MODELO, int ID_SISTEMA, string COD_MATERIAL, int NRO_PAGINA, string NRO_ITEM_MANUAL, int CANTIDAD, string REMARK_ING, string REMARK_ESP, int NRO_ITEM_SIST,string DES_MATERIAL_INGLES)
        {

            try
            {


                ContextoDeObjs.ExecuteStoreCommand("EXEC USP_SAVE_T_MAN_SISTEMA_ARTICULO @ID_MODELO={0},@ID_SISTEMA={1},@COD_MATERIAL={2},@NRO_PAGINA={3},@NRO_ITEM_MANUAL={4},@CANTIDAD={5},@REMARK_ING={6},@REMARK_ESP={7},@NRO_ITEM_SIST={8},@DES_MATERIAL_INGLES={9}",ID_MODELO,ID_SISTEMA,COD_MATERIAL,NRO_PAGINA,NRO_ITEM_MANUAL,CANTIDAD,REMARK_ING,REMARK_ESP,NRO_ITEM_SIST,DES_MATERIAL_INGLES);

                return true;
            }
            catch (SqlException ex)
            {

                Globales.msjSql = ex.Message;

                return false;
            }
            catch (Exception ex)
            {

                Globales.msjAplicacion = ex.Message;

                return false;
            }


        }

        public bool AnularT_man_sistema_articulo(int id_modelo, int id_sistema, string cod_material)
        {


            try
            {


                ContextoDeObjs.ExecuteStoreCommand("update t_man_sistema_articulo set ind_estado=0 where id_modelo=" + id_modelo + " and id_sistema= " + id_sistema + " and cod_material= '" + cod_material + "'");

                return true;


            }
            catch (SqlException ex)
            {

                Globales.msjSql = ex.Message;

                return false;
            }
            catch
            {

                return false;

            }

        }

        public bool ActualizaEstadoArticulo(int id_modelo, int id_sistema, string cod_material)
        {

            try
            {

                ContextoDeObjs.ExecuteStoreCommand("UPDATE T_MAN_SISTEMA_ARTICULO SET IND_ESTADO=1 WHERE ID_MODELO=" + id_modelo + " AND ID_SISTEMA=" + id_sistema + " AND COD_MATERIAL='" + cod_material + "'");

                return true;

            }
            catch
            {
                return false;

            }



        }






        public String RetornarCodigo(int intIdSistema,int intIdModelo,String strCodigoMaterial)
        {       
            try
            {
                var qText = String.Format("SELECT tmsa.COD_MATERIAL FROM T_MAN_SISTEMA_ARTICULO AS tmsa WHERE tmsa.ID_MODELO={0} AND tmsa.ID_SISTEMA={1} AND tmsa.COD_MATERIAL='{2}'", intIdModelo, intIdSistema, strCodigoMaterial);
                var q = ContextoDeObjs.ExecuteStoreQuery<String>(qText);
                return q.ToList().FirstOrDefault();
            }
            catch (Exception ex)
            {
                throw ex;
            }        
        }


        public String VerificaCodigo(String Codigo) {

            var qtexr = "SELECT COD_MATERIAL FROM T_MAN_ARTICULO WHERE COD_MATERIAL='"+Codigo+"'";
            var q = ContextoDeObjs.ExecuteStoreQuery<String>(qtexr);
            return q.ToList().FirstOrDefault();
        }
    }
}
